package com.revelvy.mapper;

import com.revelvy.pojo.Users;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import java.util.ArrayList;
import java.util.Map;

/**
 * Author: Revelvy
 */
@Repository
public interface UsersMapper {
    /**
     * 增加用户
     *
     * @param users 用户
     * @return 操作结果
     */
    Integer addUsers(Users users);

    /**
     * 根据id查询用户
     *
     * @param id 用户id
     * @return 用户
     */
    Users queryUsersById(@Param("id") Integer id);

    /**
     * 查询所有用户
     *
     * @return 用户集合
     */
    ArrayList<Users> queryAllUsers();

    /**
     * 分页查询用户
     *
     * @param params map{pagenum 当前页码 pagesize 每页显示条数}
     * @return 用户集合
     */
    ArrayList<Users> queryLimitUsers(Map params);

    /**
     * 分页查询用户 带待查询用户字符串
     *
     * @param params map{query 查询待查询用户字符串}
     * @return 用户集合
     */
    ArrayList<Users> queryLimitUsersWithQueryString(Map params);

    /**
     * 查询所有用户数
     *
     * @return 用户数
     */
    Integer queryTotalUsers();

    /**
     * 根据指定字符串，查询用户数
     *
     * @param params map{query 查询待查询用户字符串}
     * @return 用户数
     */
    Integer queryTotalUsersWithQueryString(Map params);

    /**
     * 更改用户状态
     *
     * @param params map{uid 用户id type 用户状态}
     * @return 操作结果
     */
    Integer updateUsersState(Map params);

    /**
     * 更新用户信息
     *
     * @param params map{uid 用户id email 用户邮箱 mobile 用户手机号}
     * @return 操作结果
     */
    Integer updateUsersById(Map params);

    /**
     * 根据id删除用户
     *
     * @param uid 用户id
     * @return 操作结果
     */
    Integer deleteUsersById(Integer uid);

    /**
     * 分配用户角色
     * @param params map{id 用户id rid 用户角色id}
     * @return 操作结果
     */
    Integer updateUserRole(Map params);
}
